﻿namespace KinonekoSoftware.Foundation.UI.Controls.Buttons
{
    public sealed partial class CallToAction : ForestButtonBase
    {

#if WINDOWS
        static CallToAction()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(CallToAction), new FrameworkPropertyMetadata(typeof(CallToAction)));
        }
        
        public static readonly DependencyProperty PaletteProperty = DependencyProperty.Register(
            nameof(Palette),
            typeof(ColorPalette),
            typeof(CallToAction),
            new PropertyMetadata(default(ColorPalette)));

        public ColorPalette Palette
        {
            get => (ColorPalette)GetValue(PaletteProperty);
            set => SetValue(PaletteProperty, value);
        }

#else
        static CallToAction()
        {
            PaletteProperty = AvaloniaProperty.Register<CallToAction, ColorPalette>(nameof(Palette));
        }

        public static readonly StyledProperty<ColorPalette> PaletteProperty;

        public ColorPalette Palette
        {
            get => GetValue(PaletteProperty);
            set => SetValue(PaletteProperty, value);
        }


#endif
    }



    public class OutlinedCallToAction : ForestButtonBase
    {
#if WINDOWS
        static OutlinedCallToAction()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(OutlinedCallToAction), new FrameworkPropertyMetadata(typeof(OutlinedCallToAction)));
        }
        

        public static readonly DependencyProperty PaletteProperty = DependencyProperty.Register(
            nameof(Palette),
            typeof(ColorPalette),
            typeof(OutlinedCallToAction),
            new PropertyMetadata(default(ColorPalette)));

        public ColorPalette Palette
        {
            get => (ColorPalette)GetValue(PaletteProperty);
            set => SetValue(PaletteProperty, value);
        }
#else
        static OutlinedCallToAction()
        {
            PaletteProperty = AvaloniaProperty.Register<OutlinedCallToAction, ColorPalette>(nameof(Palette));
        }

        public static readonly StyledProperty<ColorPalette> PaletteProperty;

        public ColorPalette Palette
        {
            get => GetValue(PaletteProperty);
            set => SetValue(PaletteProperty, value);
        }


#endif
    }
}